查看原文
其他

Unity Experimental DXR项目介绍

Unity Unity官方平台 2022-05-07

Unity正在与NVIDIA进行紧密的合作,解决光线追踪功能的难题。此项技术模拟了光线的物理属性,帮助开发者能够制作并动态调整作品,使实时效果和现实画面的界线变得模糊。


我们发布了Unity Experimental DXR项目,帮助开发者尝试Unity的实时光线追踪功能,本文将详细介绍DXR项目。


小提示:建议你提前阅读英伟达的技术工程师李元亨在Unite 2019大会上的演讲《Unity中的实时光线追踪技术剖析》,以便你熟悉和了解光线追踪技术。


DXR项目

DXR项目一个是基于Unity 2019.2a5的实验性自定义版本,该Unity版本和其中的HDRP 5.8.0版得到了DXR支持的增强,该项目仅适用于Windows系统,支持DX12 API。

 

该项目是一个让开发者尝试Unity实时光线追踪功能的沙盒环境。目前它仍处于原型状态,DXR的最终实现会和该版本不同,所以暂不能用于任何正式制作。


下载DXR

下载Unity支持DXR的实验性版本:

https://github.com/Unity-Technologies/Unity-Experimental-DXR/releases


配置要求

1、安装最新驱动的NVIDIA RTX系列显卡:

https://www.nvidia.com/Download/index.aspx?lang=com


2、Windows 10 RS5 (Build 1809)或更高版本


安装步骤

下载项目并且解压文件,启动Unity并创建一个新项目。选择DXR High Definition RP (Preview),该选项会设置DXR沙盒项目和HDRP资源包。



在3D SCENE文件夹中,打开Indoors.unity场景。


 

单击Play查看场景,我们可以在运行模式下启用或禁用光线追踪效果。默认情况下,光线追踪效果仅在游戏视图中可见。



Ray Tracing光线追踪功能配置

为了使用光线追踪功能,我们需要创建光线追踪环境,项目提供的场景内已经创建好该环境。



光线追踪环境检视窗口允许配置多个光线追踪的效果,并全局禁用或启用光线追踪。

 


Ray Bias(光线偏移):允许移动光线起点,以避免光线自相交现象。

 

Raytrace SceneView(光线跟踪场景视图):允许在场景视图启用光线追踪效果,否则光线追踪效果仅在游戏视图可见。


通常对艺术家而言,在没有光线追踪效果时在场景进行定位会更简单,特别是在光线追踪场景性能消耗较大的情况下。

 

其它设置:配置不同效果,每个效果上都有图层遮罩,可以控制效果要考虑到的对象。如果对象和效果不在相同图层,该效果不会对对象产生影响。


光线追踪效果

光线追踪环境遮蔽

 

 

AO Layer Mask(AO图层遮罩):控制哪些对象是效果的一部分。

 

AO Number of Samples(AO采样数量):采样数量越大,获得的质量越高,但同时会提高性能消耗。建议为实时性能使用4个采样数量。

 

Max AO Ray Length(最大AO光线长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能提高性能。

 

AO Filter Mode(AO过滤模式):其中降噪器类型包括:None,Spatio Temporal和NVIDIA denoiser。它下面的设置取决于所选的降噪器,让开发者能以不同性能消耗控制质量。



光线追踪反射

Ray-Traced Reflections可以为场景添加反射效果,并在启用时替换屏幕空间反射。

 

 

Reflections Layer Mask(反射图层遮罩):控制哪些对象属于效果的一部分。

 

Max Reflections Ray Length(最大反射光线长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能够提高性能。

 

Reflections Blend Distance(反射混合距离):未使用。

 

Reflections Min Smoothness(反射最小光滑度):设定使用光线追踪反射需要的最小光滑度数值,否则像素会使用反射探针或天空。

 

Reflections clamp values(反射限制数值):定义在预曝光空间中用于降低荧光效果的阈值,请尝试把该值设为1以上,以使泛光效果保持在一定强度。

 

Reflections quality(反射质量):其有二个选项:QuaterRes和Integration。


使用QuaterRes时,反射会对每个像素进行一次采样并通过时间积累来渲染,因此会渲染为完整屏幕的1/4。使用Integration时,反射会使用每个像素的采样光线数量在整个屏幕进行渲染。


在二种情况下,降噪器都会在最后应用,并使用可控制的过滤半径,设为较大半径会减少性能消耗。


Integration选项即完整分辨率的效果示例。

  


1/4分辨率的效果示例,提升性能后很难看出区别。



 

反射效果能够在视椎体外反射光线和对象。为了解决这个限制,我们可以生成光线集群,并应用到光线追踪着色器上。


光线集群是64x64x32的体素,它的大小由Cluster Range集群范围,即围绕摄像机中心的一半体素范围进行定义,并且带有每个Cluster Cell Max Lights单位设定的最大光线数量。


光线追踪矩形区域光

Ray-Traced Shadows(光线追踪矩形区域光)设置可为纹理矩形区域光启用光线追踪区域阴影。



Shadow Layer Mask(阴影图层遮罩):控制哪些对象属于该效果的一部分。

 

Shadow Num Samples(阴影采样数量):采样数量越大,获得的质量越高,但同时会提高性能消耗。建议为实时性能使用4个采样数量。

 

Max Num Shadows(最大阴影数量):设置场景允许的光线遮罩区域阴影数量,当达到最大数量时,额外的光线不会产生阴影。

 

Shadow Bilateral Radius(阴影双侧半径):控制降噪器内使用的模糊核心大小,设为较大数值能减少噪声,但会提高性能消耗。


Split Integration(分离集成):当启用该选项时,所有阴影采样会逐个执行,而不是同时执行所有采样。这样可以提高大型区域光的性能,开发者需要测量该选项的影响,从而知道它对当前应用程序是否有价值,该选项不会改变质量。



主要可见性光线追踪

Primary Visibility Raytracing使用光线追踪渲染对象。和其它依赖副光线的效果不同,该效果的目标是渲染出光滑的透明对象,尽管它也能作用于不透明对象。该效果仅支持光滑对象,即没有粗糙折射效果的对象。


  

Primary Visibility Layer Mask(主要可见性图层遮罩):控制哪些对象属于该效果的一部分。

 

Raytracing Maximal Depth(光线追踪最大深度):定义光线在和对象相交时,允许触发其它光线的次数,该属性能得到递归的平滑反射和折射效果。

 

下面是Maximal Depth为不同数值时,二个玻璃的渲染效果比较。


当Maximal Depth最大深度设为1。

 

 

当Maximal Depth最大深度设为5。


 

当Maximal Depth最大深度设为7。

  


Raytracing Ray Length(光线追踪长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能够提高性能。

 

为了让对象在该效果启用时通过主要可见性效果(Primary-Visibility)渲染,我们要编辑对象材质,在Rendering Pass属性选择Raytracing



间接漫反射光照

Indirect Diffuse Lighting允许给场景添加一个漫反射光照效果。它处于非常早期的状态,开发者可以强制实现该效果,但它不能用于实时开发的目的。该效果更多地是用于参考。 


 

Indirect Diffuse Layer Mask(间接漫反射图层遮罩):控制哪些对象属于该效果的一部分。

 

Indirect Diffuse Num Samples(间接漫反射采样数量):采样数量越大,得到的质量越高,但同时会提高性能消耗。建议使用至少16个采样,以得到反弹光照的大致效果。

 

Indirect Diffuse Ray Length(间接漫反射光线长度):光线在回退为天空光照前的最大距离,设为较低数值能够提高性能。

 

Indirect Diffuse Ray clamp values(间接漫反射光线限制值):定义在预曝光空间中用于降低荧光效果的阈值,请尝试把该值设为1以上,以使泛光效果保持在一定强度。

  

Indirect Diffuse Filter mode(间接漫反射过滤模式):使用时间和空间过滤器来得到没有噪声的结果。


调试

你可以使用调试菜单检查不同效果的结果,依次点击Windows -> Analysis -> Render Pipeline Debug,选择Lighting部分,然后选取Fullscreen Debug Mode全屏调试模式。

 

 

  • SSAO模式允许你查看光线追踪AO效果。

  • ScreenSpaceReflections模式允许查看光线追踪反射效果。

  • IndirectDiffuse模式允许查看到间接漫反射效果。

  • PrimaryVisibility模式允许查看主要可见性遮罩。

  • LightCluster模式允许查看光线集群内的光线。

 


Light cluster(光线集群):画面的颜色表示照射该区域的光线量,以不同的黄色深度表示,红色表示光线的最大预算。

 

材质制作

DXR实验性版本仅支持光线追踪的Lit和Unlit材质,而且仅支持HDRP/Lit着色器视图版本。


在为光线追踪使用材质时,目前该版本不支持任何Mipmap LOD。HDRP资源仅支持Lit Shader Mode为Deferred Only。


小结

Unity Experimental DXR项目为大家介绍到这里,更多Unity最新功能介绍,尽在Unity Connect平台(Connect.unity.com)。


下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方


推荐阅读

Unite 2019 | Unity中的实时光线追踪技术剖析

Ray Tracing光线追踪对Unity开发者的意义

Unity实时光线追踪功能演示项目创作过程

通过快捷灵活的导入功能加速BIM工作流程

如何使用Unity创建随机关卡

深度技术解析GPU光照贴图

 

直播课程

明晚8点,Unity技术经理成亮将为你解析轻量级渲染管线LWRP最新功能及案例。[了解详情...


直播课程:轻量级渲染管线LWRP最新功能及案例解析

直播地址:

https://connect.unity.com/events/2019_lwrp_new_features



喜欢本文,请点击“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存